iT邦幫忙

2022 iThome 鐵人賽

DAY 30
0
自我挑戰組

I don't know JS yet系列 第 30

[ Day 30 ] I don't know JS yet

  • 分享至 

  • xImage
  •  

(內容待補上)

回想昨日的學習:
JS 是 backwards compatibility,即使是早期的 JS 至今在瀏覽器上還是可以執行;
如果出現舊瀏覽器要跑較新 JS program,就會使用 transpiler 來填補這些 forward compatibility 的問題,常見的 transpiler 就是 babel;

開始今天份的學習吧

What's in an Interpretation ?
https://ithelp.ithome.com.tw/upload/images/20220920/201516320BcokxvL21.png

Interpreted Language 直譯式語言
直譯式語言是一種「由上到下」、「逐行執行」的程式語言特性。假如第五行代碼有錯誤,第一行至第四行得先執行完,第五行的錯誤才會出現;

Compiled Language 編譯式語言
https://ithelp.ithome.com.tw/upload/images/20220920/20151632DXVk50Iccb.png

編譯式語言是經過 parsing -> compilation -> execution ,因此在執行之前 會將所有 error 在 parsing, compiling 階段被抓出來;

JavaScript 是 interpreted 還是 compiled ?
先說結論,JavaScript 是 interpreted language (直譯式語言)。
但!藉由 JS VM ( engine ) parsing, compiling, and executing 的論點,本書作者認為 JS 是 compiled language。

搞得我好混亂 ... ,今天先將 engine 如何 parsing -> compiling -> executing 畫出來,明天再繼續:

來看看 JS 如何在 engine 上運作:

https://ithelp.ithome.com.tw/upload/images/20220920/20151632YRn7OF7PR5.png

[ 參考 ]

https://github.com/getify/You-Dont-Know-JS/blob/2nd-ed/get-started/ch1.md#whats-in-an-interpretation
https://blog.bitsrc.io/how-does-javascript-really-work-part-1-7681dd54a36d


上一篇
[ Day 29 ] I don't know JS yet - Variable re-declaration ? ( part 2 )
系列文
I don't know JS yet30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言